package TestCases;

import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;


import org.apache.logging.log4j.LogManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author 刘智King
 * @date 2020年8月14日 上午11:18:42
 */
public class DateUtil {

    static Logger log = LoggerUtils.getLogger(DateUtil.class);

    static Calendar cale = Calendar.getInstance();
    ;
    static Map<String, String> date = new HashMap<>();

    /**
     * 获取当前系统时间
     *
     * @return
     */
    public static String getDate() {
        SimpleDateFormat Date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        log.info(Date.format(new Date()));
        return Date.format(new Date());
    }

    public static String getDateFormat(String DateFormat) {
        SimpleDateFormat Date = new SimpleDateFormat(DateFormat);
//        log.info(Date.format(new Date()));
        return Date.format(new Date());
    }

    /**
     * 获取当前月的第一天和最后一天
     *
     * @return
     */
    public static Map<String, String> getDateCalendar(String DateFormat) {
        SimpleDateFormat format = new SimpleDateFormat(DateFormat);
        String firstday, lastday;

        // 获取当前月的第一天
        cale.add(Calendar.MONTH, 0);
        cale.set(Calendar.DAY_OF_MONTH, 1);
        firstday = format.format(cale.getTime());

        // 获取当前月的最后一天
        cale.add(Calendar.MONTH, 1);
        cale.set(Calendar.DAY_OF_MONTH, 0);
        lastday = format.format(cale.getTime());

        date.put("firstday", firstday);
        date.put("lastday", lastday);
        return date;
    }

    /**
     * 获取当前系统时间戳，单位秒
     *
     * @return
     */
    public static long getTime() {
        long Time = new Date().getTime();
//        log.info(Time);
        return Time;
    }

    /**
     * 获取当前系统x天后的时间戳，单位秒
     *
     * @return
     */
    public static String getDateTime() {
        String Time = String.valueOf(new Date().getTime() + 24 * 60 * 60 * 1000 * 30L);
        Time = Time.substring(0, Time.length() - 3);
//        log.info(Time);
        return Time;
    }

    /**
     * 时间戳转系统时间
     *
     * @return
     */
    public static String convertTimestampToLocalDateTime(long timestampInMillis, String pattern) {
        // 将毫秒级时间戳转换为Instant对象
        Instant instant = Instant.ofEpochMilli(timestampInMillis);

        // 将Instant转换为系统默认时区的LocalDateTime
        ZoneId systemZone = ZoneId.systemDefault();
        LocalDateTime localDateTime = instant.atZone(systemZone).toLocalDateTime();

        // 创建日期时间格式化器
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);

        // 格式化日期时间字符串
        return localDateTime.format(formatter);
    }

    public static void main(String[] args) {
        getTime();
//    	getDateFormat("yyyy_MM_dd_HH_mm_ss");
//        log.info(System.currentTimeMillis());

    }

}
